/**
 **************************************************************************************************************************
 * Class in charge of managing resources and taking care that data is not duplicated in memory
 **************************************************************************************************************************
 * @file RBResourceManager.h
 **************************************************************************************************************************/


#ifndef __RBRESOURCEMANAGER_H__
#define __RBRESOURCEMANAGER_H__

#ifdef  HEADER_ONCE
#pragma HEADER_ONCE
#endif

#ifdef  HEADER_MSG
#pragma HEADER_MSG(RBResourceManager.h)
#endif


/**************************************************************************************************************************
 * Includes
 **************************************************************************************************************************/
#include "RBTexture.h"

/**************************************************************************************************************************
 * Forward declarations
 **************************************************************************************************************************/

/**************************************************************************************************************************
 * Classes
 **************************************************************************************************************************/
class RBResourceManager : public RBSingleton<RBResourceManager>
{
public:
            RBResourceManager   ();
           ~RBResourceManager   ();

    void    AddPath             (const RBString& strDir);

    RBTexture* GetTexture       (const RBString& strFile);

private:

    std::vector<RBString> m_vDirs;
    std::map<RBString, RBTexturePtr> m_mTextures;
};

/**************************************************************************************************************************/

#endif // __RBRESOURCEMANAGER_H__